<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <title>node.js 开发规范 | 云飞扬 - 个人博客</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="命名规范命名法说明
camel命名法，形如 thisIsAnApple
pascal命名法，形如ThisIsAnApple
下划线命名法，形如this_is_an_apple
中划线命名法，形如this-is-an-apple
匈牙利命名法，变量名＝类型＋对象描述

命名法说明
变量名：必须使用camel命名法
参数名：必须使用camel命名法
函数名：必须使用camel命名法
方法/属性：必须使">
<meta property="og:type" content="article">
<meta property="og:title" content="node.js 开发规范">
<meta property="og:url" content="http://blog.yxxit.com/2017/01/19/nodejs开发规范/index.html">
<meta property="og:site_name" content="云飞扬 - 个人博客">
<meta property="og:description" content="命名规范命名法说明
camel命名法，形如 thisIsAnApple
pascal命名法，形如ThisIsAnApple
下划线命名法，形如this_is_an_apple
中划线命名法，形如this-is-an-apple
匈牙利命名法，变量名＝类型＋对象描述

命名法说明
变量名：必须使用camel命名法
参数名：必须使用camel命名法
函数名：必须使用camel命名法
方法/属性：必须使">
<meta property="og:updated_time" content="2017-01-19T12:31:13.110Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="node.js 开发规范">
<meta name="twitter:description" content="命名规范命名法说明
camel命名法，形如 thisIsAnApple
pascal命名法，形如ThisIsAnApple
下划线命名法，形如this_is_an_apple
中划线命名法，形如this-is-an-apple
匈牙利命名法，变量名＝类型＋对象描述

命名法说明
变量名：必须使用camel命名法
参数名：必须使用camel命名法
函数名：必须使用camel命名法
方法/属性：必须使">
  
    <link rel="alternate" href="/atom.xml" title="云飞扬 - 个人博客" type="application/atom+xml">
  
  
    <link rel="icon" href="/view/favicon.ico">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  <link rel="stylesheet" href="/view/css/style.css">
  

</head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/view/" id="logo">云飞扬 - 个人博客</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/view/">Home</a>
        
          <a class="main-nav-link" href="/view/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" results="0" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="http://blog.yxxit.com"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main"><article id="post-nodejs开发规范" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/view/2017/01/19/nodejs开发规范/" class="article-date">
  <time datetime="2017-01-19T11:56:53.000Z" itemprop="datePublished">2017-01-19</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      node.js 开发规范
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <h2 id="命名规范"><a href="#命名规范" class="headerlink" title="命名规范"></a>命名规范</h2><h3 id="命名法说明"><a href="#命名法说明" class="headerlink" title="命名法说明"></a>命名法说明</h3><ol>
<li>camel命名法，形如 <code>thisIsAnApple</code></li>
<li>pascal命名法，形如<code>ThisIsAnApple</code></li>
<li>下划线命名法，形如<code>this_is_an_apple</code></li>
<li>中划线命名法，形如<code>this-is-an-apple</code></li>
<li>匈牙利命名法，<code>变量名</code>＝<code>类型</code>＋<code>对象描述</code></li>
</ol>
<h3 id="命名法说明-1"><a href="#命名法说明-1" class="headerlink" title="命名法说明"></a>命名法说明</h3><ol>
<li>变量名：必须使用camel命名法</li>
<li>参数名：必须使用camel命名法</li>
<li>函数名：必须使用camel命名法</li>
<li>方法/属性：必须使用camel命名法</li>
<li>私有（保护）成员：必须以下划线_开头</li>
<li>常量名：必须使用全部大写的下划线命名法，如IS_DEBUG_ENABLED</li>
<li>类名：必须使用pascal命名法</li>
<li>枚举名：必须使用pascal命名法</li>
<li>枚举的属性：必须使用全部大写的下划线命名法</li>
<li>命名空间：必须使用camel命名法</li>
<li>语义：命名同时还需要关注语义，如：<ul>
<li>变量名应当使用名词；</li>
<li>boolean类型的应当使用is、has等起头，表示其类型；</li>
<li>函数名应当用动宾短语；getName</li>
<li>类名应当用名词。Person</li>
</ul>
</li>
</ol>
<h3 id="项目名称"><a href="#项目名称" class="headerlink" title="项目名称"></a>项目名称</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">mohoo-telecom-wechat-manager</div></pre></td></tr></table></figure>
<h3 id="文件目录"><a href="#文件目录" class="headerlink" title="文件目录"></a>文件目录</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">proxy</div></pre></td></tr></table></figure>
<h3 id="proxy-rest-contr-文件名称"><a href="#proxy-rest-contr-文件名称" class="headerlink" title="proxy,rest,contr 文件名称"></a>proxy,rest,contr 文件名称</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">AuthProxy</div><div class="line">AuthRest</div><div class="line">AuthCtrl</div></pre></td></tr></table></figure>
<h3 id="接口地址"><a href="#接口地址" class="headerlink" title="接口地址"></a>接口地址</h3><h3 id="静态资源"><a href="#静态资源" class="headerlink" title="静态资源"></a>静态资源</h3><ol>
<li>js</li>
<li>css: page-alert-span</li>
<li>img: page-icon-add</li>
</ol>
<h3 id="router"><a href="#router" class="headerlink" title="router"></a>router</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">router.get(&apos;/index&apos;, auth.authWxUser, home.Index);</div><div class="line">router.get(&apos;/rule&apos;, auth.authWxUser, home.Rule);</div><div class="line"></div><div class="line">router.get(&apos;/query/devicename&apos;, auth.authWxUser, home.deviceName);//查询</div><div class="line">router.get(&apos;/create/record&apos;, auth.authWxUser, home.record);//创建</div><div class="line">router.get(&apos;/update/recordstatus&apos;, auth.authWxUser, home.recordStatus);//修改</div><div class="line">router.get(&apos;/delete/recordbyid&apos;, auth.authWxUser, home.recordById);//删除</div></pre></td></tr></table></figure>
<h3 id="类名，对象名"><a href="#类名，对象名" class="headerlink" title="类名，对象名"></a>类名，对象名</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">function Person()&#123;</div><div class="line"></div><div class="line">&#125;</div><div class="line"></div><div class="line">var BillAndPayProxy = &#123;&#125;;</div><div class="line">BillAndPayProxy.getWXPayData = function (param, callback) &#123;</div><div class="line">    httpUtil.post(apis.wxDiscPayUrl, param, function (error, response, content) &#123;</div><div class="line">        callback(error, content);</div><div class="line">    &#125;);</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
<h3 id="方法名称"><a href="#方法名称" class="headerlink" title="方法名称"></a>方法名称</h3><ul>
<li>getName</li>
<li>addUserRecord</li>
<li>get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end。</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">var AuthProxy = &#123;&#125;;</div><div class="line"></div><div class="line">AuthProxy.getName();</div></pre></td></tr></table></figure>
<h3 id="私有变量"><a href="#私有变量" class="headerlink" title="私有变量"></a>私有变量</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">var AuthProxy = &#123;</div><div class="line">	_name: &apos;&apos;,</div><div class="line">	_age: &apos;&apos;</div><div class="line">&#125;;</div><div class="line">var person = &#123;</div><div class="line">	_setSext: function() &#123;</div><div class="line">		// ...</div><div class="line">	&#125;,</div><div class="line">	_setName: function() &#123;</div><div class="line">		// ...</div><div class="line">	&#125;</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
<h3 id="常量"><a href="#常量" class="headerlink" title="常量"></a>常量</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">var PI = &apos;3.1415926&apos;;</div><div class="line">var URL_BIND = &apos;http://wwww.baidu.com&apos;;</div></pre></td></tr></table></figure>
<h3 id="变量"><a href="#变量" class="headerlink" title="变量"></a>变量</h3><blockquote>
<p>总所周知，javascript是一种语法极其灵活的语言。javascript在设计之初就只是用来为HTML添加动态效果的。由于他动态，弱类型等特性，以及不同浏览器的兼容性问题，、<br>造成了开发成本要比java等语言要高很多。正因为它太灵活，我们制定了适用于网易邮箱的javascript编码规范，尽可能多的降低由于语法灵活造成的问题。<br>以下将具体介绍：</p>
</blockquote>
<p>变量名包括<code>全局变量</code>，<code>局部变量</code>，<code>类变量</code>，<code>函数参数</code>等等</p>
<h6 id="基本规范"><a href="#基本规范" class="headerlink" title="基本规范"></a>基本规范</h6><p><code>变量命名</code>都以<code>类型前缀</code>+<code>有意义的单词</code>组成，单词首字母都需要大写。例如：<code>sUserName</code>，<code>nCount</code>。</p>
<h6 id="前缀规范"><a href="#前缀规范" class="headerlink" title="前缀规范"></a>前缀规范</h6><p>每个局部变量都需要有一个类型前缀，按照类型可以分为：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">s：表示字符串。例如：sName，sHtml;</div><div class="line"></div><div class="line">n：表示数字。例如：nPage，nTotal;</div><div class="line"></div><div class="line">b：表示逻辑。例如：bChecked，bHasLogin;</div><div class="line"></div><div class="line">a：表示数组。例如：aList，aGroup;</div><div class="line"></div><div class="line">r：表示正则表达式。例如：rDomain，rEmail;</div><div class="line"></div><div class="line">f：表示函数。例如：fGetHtml，fInit;</div><div class="line"></div><div class="line">o：表示以上未涉及到的其他对象，例如：oButton，oDate;</div><div class="line"></div><div class="line">g：global 全局变量 例如：gVersion</div></pre></td></tr></table></figure>
<h6 id="例外情况："><a href="#例外情况：" class="headerlink" title="例外情况："></a>例外情况：</h6><p>1：作用域不大临时变量可以简写，比如：str，num，bol，obj，fun，arr。</p>
<p>2：循环变量可以简写，比如：i，j，k等。</p>
<p>为什么需要这样强制定义变量前缀?<br>正式因为javascript是弱语言造成的。在定义大量变量的时候，我们需要很明确的知道当前变量是什么属性，<br>如果只通过普通单词，是很难区分的。</p>
<ol>
<li>函数命名规范</li>
</ol>
<p>统一使用<code>动词</code>或者<code>动词[+名词]</code>形式，例如：fGetVersion()，fSubmitForm()，fInit();<br>涉及返回逻辑值的函数可以使用is，has等表示逻辑的词语代替动词。</p>
<p>如果有内部函数，使用__f+动词[+名词]形式，内部函数必需在函数最后定义。例如：<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">function fGetNumber(nTotal) &#123;</div><div class="line">	if (nTotal &lt; 100) &#123;</div><div class="line">		nTotal = 100;</div><div class="line">	&#125;</div><div class="line">	return __fAdd(nTotal);</div><div class="line"></div><div class="line">	function __fAdd(nNumber) &#123;</div><div class="line">		nNumber++;</div><div class="line">		return nNumber;</div><div class="line">	&#125;</div><div class="line">&#125;</div><div class="line">fGetNumber(30)</div></pre></td></tr></table></figure></p>
<p>3.其他注意事项</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">1：所有命名最好使用英语表示。</div><div class="line"></div><div class="line">2：所有变量名应该明确而必要，尽量避免不必要的容易混淆的缩写。</div><div class="line"></div><div class="line">3：netease.events.mouse.Handler，而不是 netease.events.mouse.MouseEventHandler。</div><div class="line"></div><div class="line">4：对应的方法应该使用对应的动词，例如：get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end。</div><div class="line"></div><div class="line">5：应该避免双重否定意义的变量，例如：bIsNotError, bIsNotFound，不可取。</div><div class="line"></div><div class="line">6：变量应该在最小的范围内定义，并尽可能的保持最少的活动时间。</div><div class="line"></div><div class="line">7：尽量避免复杂的条件语句，可以使用临时的boolean变量代替。</div><div class="line"></div><div class="line">8：一定要避免在条件中执行语句，例如：if((i=3)&gt;2)&#123;&#125;，不可取。</div></pre></td></tr></table></figure>
<h2 id="匈牙利命名法"><a href="#匈牙利命名法" class="headerlink" title="匈牙利命名法"></a>匈牙利命名法</h2><h3 id="匈牙利命名法语法："><a href="#匈牙利命名法语法：" class="headerlink" title="匈牙利命名法语法："></a>匈牙利命名法语法：</h3><p><code>变量名</code>＝<code>类型</code>＋<code>对象描述</code><br><strong>类型</strong>指变量的类型<br><strong>对象描述</strong>指对象名字全称或名字的一部分，要求有明确含义，命名要容易记忆容易理解。<br>提示: 虽然JavaScript变量表面上没有类型，但是JavaScript内部还是会为变量赋予相应的类型。</p>
<p>提示: 匈牙利命名法是一位微软程序员发明的，多数的C,C++程序都使用此命名法。</p>
<p>JavaScript变量匈牙利命名类型<br>JavaScript变量起名类型    变量命名前缀<br>Array 数组    a<br>Float 浮点    l<br>Function 函数    f<br>Integer(int) 整型    n<br>Object 对象    o<br>Regular Expression 正则    r<br>String 字符串    s<br>g全局变量        g<br>JavaScript变量名匈牙利命名法示例<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">var sWebURL=&quot;www.jb51.net&quot;;</div></pre></td></tr></table></figure></p>
<p>从变量的名字可以看出s代表字符串WebURL是网址。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">var nCheckCount=5;</div></pre></td></tr></table></figure></p>
<p>从变量的名字可以看出n代表Integer(整型)，CheckCount代表某种数量。</p>
<p>使用匈牙利命名法非常简单直观，方便判断变量的类型，而且方便程序的阅读与维护。</p>
<h2 id="限制"><a href="#限制" class="headerlink" title="限制"></a>限制</h2><ol>
<li>尽量不要使用 eval()，冗余产生入侵</li>
<li>缩进 在同一系统中应采用同一种缩进标准，本文提倡缩进大小为4个空格。</li>
<li>花括号{}</li>
<li><p>空格  任何“;”后空一格、for循环中初始化“,”后空一格、数组中”,”后空一格、对象中“:”后空一格、如：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">for (var i = 0, j = 1; i &lt; 10; i += 1)&#123;</div><div class="line">  var some = [1, 2, 3];</div><div class="line">  var obj = &#123;aa: 1, bb: 2&#125;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
</li>
<li><p>函数参数里“,”后空一格、函数声明中花括号前空一格、函数表达式中括号前后各空一格，如：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">func(a, b, c)&#123;&#125;;</div><div class="line">function func() &#123;&#125;;</div><div class="line">var func = function () &#123;&#125;;</div></pre></td></tr></table></figure>
</li>
<li><p>所有的操作符前后都跟一个空格，如：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">var d = 0,</div><div class="line">    a = b + 1;</div><div class="line">if (a &amp;&amp; b &amp;&amp; c) &#123;</div><div class="line">    d = a % c;</div><div class="line">    a += d;</div><div class="line">&#125;</div></pre></td></tr></table></figure>
</li>
<li><p>换行<br>在以下位置必须换行：</p>
<ul>
<li>每个独立语句结束后；</li>
<li>if、else、catch、finally、while等关键字前；</li>
<li>运算符处换行时，运算符必须在新行的行首。</li>
<li>对于因为单行长度超过限制时产生的换行，参考行长度中的策略进行分隔。</li>
</ul>
</li>
<li><p>三元运算符过长</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">//无需换行</div><div class="line">var result = content?result1:result2;</div><div class="line"></div><div class="line">//换行</div><div class="line">var data = _.isEmpty(content)</div><div class="line">  ? _.isEmpty(content2)</div><div class="line">    ?content3:content2</div><div class="line">  :content;</div></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="Interface-接口返回参数规范"><a href="#Interface-接口返回参数规范" class="headerlink" title="Interface 接口返回参数规范"></a>Interface 接口返回参数规范</h2><ol>
<li>接口名称：大驼峰吗？</li>
<li>返回参数，小驼峰<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">&#123;status:200,data:&#123;name:&apos;admin&apos;,list:[]&#125;,info:&apos;&apos;&#125;</div><div class="line">&#123;status:0,data:&apos;查询失败&apos;,info:&apos;&apos;&#125;</div><div class="line">&#123;status:5005,data:&apos;服务器繁忙&apos;,info:&apos;&apos;&#125;</div></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="Proxy-代理层"><a href="#Proxy-代理层" class="headerlink" title="Proxy 代理层"></a>Proxy 代理层</h2><ol>
<li>注释：标记入参，出参</li>
<li>将接口参数返回为标准模式参数</li>
<li>在备注中添加，功能简介，<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">/**</div><div class="line"> * 录入赠送记录</div><div class="line"> * 1. 通过。。。。</div><div class="line"> * @param params</div><div class="line"> * &#123;&quot;openid&quot;:&quot;微信唯一标识&quot;,&quot;from_deviceno&quot;:&quot;发起人设备号 必传&quot;,&quot;to_deviceno&quot;:&quot;接受人设备号 必传&quot;,&quot;gifts&quot;:&quot;礼物 [50M、100G] 必传&quot;,&quot;type&quot;:&quot;类型 [1]流量 必传&quot;,&quot;remark&quot;:&quot;备注 一个有规则的json串&quot;&#125;</div><div class="line"> * @param callback</div><div class="line"> *  &#123;&quot;data&quot;:&quot;赠送记录唯一标识&quot;,&quot;status&quot;:200,&quot;info&quot;:0&#125;</div><div class="line"> * @constructor</div><div class="line"> */</div><div class="line">GiveFlowProxy.GfCreateGivingGiftsRecord = function (params, callback) &#123;</div><div class="line">    var url = urlKit.GfCreateGivingGiftsRecord;</div><div class="line">    httpUtil.post(url, params, function (error, response, content) &#123;</div><div class="line">        callback(error, content);</div><div class="line">    &#125;);</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="写注释"><a href="#写注释" class="headerlink" title="写注释"></a>写注释</h2><ol>
<li>注释规范</li>
<li>包含那些信息</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">/**</div><div class="line"> * 方法名</div><div class="line"> 1. 简要写一下功能操作</div><div class="line"> * @param  &#123;[type]&#125;   param    [description]</div><div class="line"> * @param  &#123;Function&#125; callback [description]</div><div class="line"> * @return &#123;[type]&#125;            [description]</div><div class="line"> */</div><div class="line">BillAndPayProxy.getWXPayData = function (param, callback) &#123;</div><div class="line">    httpUtil.post(apis.wxDiscPayUrl, param, function (error, response, content) &#123;</div><div class="line">        logger.info(&quot;获取微信支付数据返回结果：&quot; + JSON.stringify(param) + JSON.stringify(content));</div><div class="line">        callback(error, content);</div><div class="line">    &#125;);</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul>
<li><a href="http://www.php100.com/html/webkaifa/javascript/2012/0616/10550.html" target="_blank" rel="external">网易前端JavaScript编码规范</a></li>
<li><a href="http://www.jb51.net/article/87142.htm" target="_blank" rel="external">最全的Javascript编码规范(推荐)</a></li>
<li><a href="http://www.jb51.net/article/22229.htm" target="_blank" rel="external">javascript 命名规则 变量命名规则</a></li>
</ul>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://blog.yxxit.com/view/2017/01/19/nodejs开发规范/" data-id="ciy4cz1or0000r8dd7gh8tygp" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/view/tags/node-js-规范/">node.js, 规范</a></li></ul>

    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/view/2017/01/19/es5/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Newer</strong>
      <div class="article-nav-title">
        
          ES5 新增特性汇总
        
      </div>
    </a>
  
  
    <a href="/view/2017/01/19/hello-world/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Older</strong>
      <div class="article-nav-title">Hello World</div>
    </a>
  
</nav>

  
</article>

</section>
        
          <aside id="sidebar">
  
    

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tags</h3>
    <div class="widget">
      <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/view/tags/node-js-规范/">node.js, 规范</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tag Cloud</h3>
    <div class="widget tagcloud">
      <a href="/view/tags/node-js-规范/" style="font-size: 10px;">node.js, 规范</a>
    </div>
  </div>

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/view/archives/2017/03/">March 2017</a></li><li class="archive-list-item"><a class="archive-list-link" href="/view/archives/2017/02/">February 2017</a></li><li class="archive-list-item"><a class="archive-list-link" href="/view/archives/2017/01/">January 2017</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/view/2017/03/21/npm/">npm 常用命令</a>
          </li>
        
          <li>
            <a href="/view/2017/03/21/git/">Git 常用命令</a>
          </li>
        
          <li>
            <a href="/view/2017/03/05/windows nginx natapp/">windows nginx natapp</a>
          </li>
        
          <li>
            <a href="/view/2017/02/17/node.js 模块之 pm2/">node.js 模块之 pm2</a>
          </li>
        
          <li>
            <a href="/view/2017/02/16/node.js 6.9.4 升级/">node.js 6.9.4 升级</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2017 coolshaw<br>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="/view/" class="mobile-nav-link">Home</a>
  
    <a href="/view/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    

<script src="//cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>


  <link rel="stylesheet" href="/view/fancybox/jquery.fancybox.css">
  <script src="/view/fancybox/jquery.fancybox.pack.js"></script>


<script src="/view/js/script.js"></script>

  </div>
</body>
</html>